OBV_RMA_CRYPTO Buy and Hold Destroyer free versionThis is a free version which use part of the logic that I am applying on my destroyer/annihilation series of strategies.
This version its made for 8-12h and works amazingly on the ETH pairs. Can be adapted to others as well
For this example, I used an initial 1$ account, using always full capital on each trade(without using any leverage), together with a 0.1% commission/fees for each deal, on Coinbase broker.
For risk management, we have a hard stop loss on the equity of 25%.
The components for the inside of the strategy are the next one :
1. OBV- SoftKill Version adapted to cryptos
2. ATR - SoftKill Version adapted to cryptos
3. RMA Rolling moving average
The rules here are simple we check for the trend direction with ATR and then we check for cross up or above on OBV and RMA moving average. Based on this we enter long or short.
RISK WARNING
Trading on any financial market involves a risk of loss. Please consider carefully if such trading is appropriate for you. Past performance is not indicative of future results.
If you have any questions or you are interested in trying it, private message me and I will give you as soon as I see the message a trial for it.
Cari dalam skrip untuk "stop loss"
KISS Strategy: SMA + EMA//Hello my fellow investors
//I am creating a simple non-cluttered strategy that uses 3(+1) simple means to determine: viability, entry, and exit
//1) Has a consistent trend been maintained for several days/weeks
//2) SH SMA crossover LG SMA = Bullish entry/LG SMA crossover SH SMA = Bearish entry
//3) Use the Slope factor & Weeks in Trend (WiT) to dertermine how strong of an entry signal you are comfortable with
//4) Exit position based on next SMA cross and trend reversal or stop loss%
//3+1) For added confidence in trend detection: Apply MACD check - buy--> MACD line above signal line and corssover below histogram \\ sell --> MACD line below signal line and crossover above histogram.
//*)This code also allows you to determine your desired backtesting date compliments of alanaster
The chart shown has:
Starting Capital: $10,000
Investment percent per trade: 1.5%
Stop Loss: 20%
Take Profit: 100%
Gregoire Channel StrategyAdd the strategy to the chart, and start by selecting one of four systems:
1) Trend Following
2) Trend Following - Long Only
3) Volatility Breakout
4) Volatility Breakout - Long Only
Each system is better suited to a particular type of market. Find out through back-testing which system and timeframe is best for each market.
Trend Following is good for securities that strongly trend up and down. Examples: Bitcoin, "growth" stocks.
Trend Following (Long Only) is great for stock indexes that are on a 100 year uptrend, or US-based crypto exchanges which don't allow margin trading but you want to catch the big trends (BTC, ETH).
Volatility Breakout is a defensive system designed to capture the meat of the move and protect the gains. This system is better for altcoins and mature markets like forex pairs.
Volatility Breakout (Long Only) is for US-based crypto exchanges that don't allow margin trading. Good for altcoins.
DEFAULT SETTINGS:
START DATE: 1/1/2020
FEE: 0.1% (This is the Binance.us fee per trade, tailor it to your exchange)
TAKE PROFIT GCW: 0
STOP LOSS GCW: 0
LENGTH: 20
SOURCE: HL2
The system doesn't need stop losses or take profit levels as they are built into the system, but you can add them if you want. 1 GCW = half the channel, so the distance from the top of the channel to the middle line. 2 GCW = the height of the channel.
MISC
-Make sure you calculate the fees! They make a huge difference in profitability. For example, test how Coinbase.com's fees of 0.5% compared to Binance.us's fees of 0.1%. It's huge!
-Try different sets of lengths and timeframes. For example, I like using the daily timeframe and low length for stocks and intraday timeframe with long lengths for crypto. See what tests best!
Disclaimer: past performance doesn't equal future results, this isn't financial advice, this is for entertainment purposes only, consult a professional financial advisor.
GreenCrypto PR Strategy for Swing TradesThis is a very good strategy for Swing Trading, I have been using this strategy for very long time and made good amount of profit using this. This works great for both long trades and short trades, Stop loss and Take profit target is must while entering the trade, this make sure that the trade ends up in good profit and in case if the market revers, ends in only small loss.
This strategy works using the pivot points, we calculate the pivot point using the number of candles mentioned in the input field "leftBars" and "rightBars", if you add more number of bars then the frequency of the trade decreases. for example with the leftBars as 4 you will get less trades than the leftBar=2. Every trade entry is represented using "Buy" and "Sell" signals, whenever there is a new signal chart shows buy/sell signal for limit price, you need to add a limit order for the same price.
Parameters:
LeftBars = Number of left bars should be used for calculating the pivot pints, (more bars means less frequent trades)
RightBars = Number of right candle bars used for calculating the pivot points (more bars means less frequent trades)
Date/month/day : for selecting the right backtesting the period (currently it set to Jan 2018 to current day )
for this backtesting i have used 1000$ capital and with 10% capital used for each trade, free to modify it as per your needs.
This strategy works best on 4H time frame but you can also try backtesting on other time periods.
The default parameters present in the strategy is works best for most of famous cryptocurrencies on 4H time period.
Please DM me if you would like to tryout 7 Days free trail.
Simple and efficient MACD crypto strategy with risk managementToday I am glad to bring you another great creation suited for crypto markets.
MARKET
Its a simple and efficient strategy, designed for crypto markets( btcusd , btcusdt and so on), and suited for for higher time charts : like 1hour, 4hours, 1 day and so on.
Preferably to use 1h time charts.
COMPONENTS
MACD with simple moving average
ENTRY DESCRIPTION
For entries we have :
We check the direction with MACD . Depending if its an uptrend and positive level on histogram of MACD we go long, otherwise we go short.
RISK MANAGEMENT
In this strategy we use a stop loss based on our equity. For this example I choosed a 2% risk .That means if our account has 100.000 eur, it will automatically close the trade if we lose 2.000.
We dont use a take profit level.
In this example also we use a 100.000 capital account, risking 5% on each trade, but since its underleveraged, we only use 5000 of that ammount on every trade. With leveraged it can be achieved better profits and of course at the same time we will encounter bigger losses.
The comission applied is 5$ and a slippage of 5 points aswell added.
For any questions or suggestions regarding the script , please let me know.
High/low crypto strategy with MACD/PSAR/ATR/EWaveToday I am glad to bring you another great creation of mine, this time suited for crypto markets.
MARKET
Its a high and low strategy, designed for crypto markets( btcusd , btcusdt and so on), and suited for for higher time charts : like 1hour, 4hours, 1 day and so on.
Preferably to use 1h time charts.
COMPONENTS
Higher high and lower low between different candle points
MACD with simple moving average
PSAR for uptrend and downtrend
Trenddirection made of a modified moving average and ATR
And lastly elliot wave oscillator to have an even better precision for entries and exits.
ENTRY DESCRIPTION
For entries we have : when the first condition is meet(we have a succession on higher high or lower lows), then we check the macd histogram level, then we pair that with psar for the direction of the trend, then we check the trend direction based on atr levels with MA applied on it and lastly to confirm the direction we check the level of elliot wave oscillator. If they are all on the same page we have a short or a long entry.
STATS
Its a low win percentage , we usually have between 10-20% win rate, but at the same time we use a 1:30 risk reward ratio .
By this we achieve an avg profit factor between 1.5- 2.5 between different currencies.
RISK MANAGEMENT
In this example, the stop loss is 0.5% of the price fluctuation ( 10.000 -> 9950 our sl), and tp is 15% (10.000 - > 11500).
In this example also we use a 100.000 capital account, risking 5% on each trade, but since its underleveraged, we only use 5000 of that ammount on every trade. With leveraged it can be achieved better profits and of course at the same time we will encounter bigger losses.
The comission applied is 5$ and a slippage of 5 points aswell added.
For any questions or suggestions regarding the script , please let me know.
Intraday Trend Following Algorithm [Bitduke]Description :
Trend following strategy that constantly adjusts to volatility and avoids of most whipsaws; rapidly moves up or down according to a quickly changing market. Great strategy for high volatile markets, like crypto market.
Based on a couple of special moving averages with integrated smoother which helps to avoid whipsaws.
Backtesting
Backtested on BTCPERP ( FTX ). It shows much better results on 4h timeframe (more than 222% YTD) and relatively low drawdown which allows you to use up to x3 leverage without a fear of huge losses. I.e if we have 5% drawdown for this strategy and using x3 leverage then to be prepared to 15% drawdown maximum in this case.
Initial Capital: $1000
Capital per trade: $1000
Including fee: 0.075% (buy + sell) side, type "taker"
When we get a signal (green/red column on chart) algo opens a trade by the next candle open price.
Others:
Risk management: Stop loss/Take profit in %
Strategy doesn't repaint .
----------
To access: sign up on FTX using ref link from my signature.
PD Crypto Performer PRO (Backtest)Description:
This is the backtesting version of the PD Crypto Performer Pro (Alert) . You can choose to backtest either one of the two strategies included, a trend-identifying swing strategy and a low risk scalping strategy. Both strategies assume the same capital amount invested ($10,000) each trade. You can also see how your capital grows over time by enabling the reinvesting proceeds option. For details, please check out this tutorial .
The backtesting results could be easily improved in live trading by utilizing the “Take Profit” signals and following the recommended methods of use below.
To assist the decision-making process, the code currently references BTCUSD. As a result, it is only suitable for crypto traders. However, we are working on the stock and forex versions, and the Performer will have these compatibilities soon.
Most importantly, our signals DO NOT REPAINT !
Recommended Use:
- Time Frame: 1HR
- Asset: Large cap crypto assets.
For lower risk tolerance, we recommend using the indicator on ETHUSD. For maximizing profits, we recommend using the indicator on BCHUSD.
- Always set stop loss according to your own risk tolerance
- Take profits along the way. Check out this video tutorial for when to reenter after our take profit signals.
Recommended Use for Advanced Traders:
- Position sizing:
Larger position if the 1HR signal is in the same direction compared to the 4HR trend.
Smaller position if the 1HR signal is in the opposite direction compared to the 4HR trend.
- Better entry/exit points:
Track the 1HR signal for the asset you are trading on other exchanges along with the BTCUSD 1HR signal. Sometimes, the signals from different exchanges occur with a 1-2 hour difference. You could use these earlier signals along with a lower time frame (eg. 15min) entry confirmation from your own exchange for better entry / exit points.
- Use “Take Profit” signals for counter trend scalps. Recover at the reentering opportunities . This works best with candlestick pattern confirmations.
Never use this if you suspect a flag / inverted flag pattern is forming.
Go to www.phi-deltalytics.com and sign up for a FREE trial today!
Let us know if you have any questions or recommendations. We are here for your success!
Disclaimer:
It should not be assumed that the methods, techniques, or indicators presented will be profitable or that they will not result in losses. Past results are not necessarily indicative of future results. This is not a solicitation of any order to buy or sell.
PD Crypto Performer (Backtest)Description:
This is the backtesting version of the PD Crypto Performer (Alert) . The strategy assumes the same capital amount invested ($10,000) each trade. You can also see how your capital grows over time by enabling the reinvesting proceeds option. For details, please check out this tutorial . The backtesting results could be easily improved in live trading by following the recommended methods of use below.
To assist the decision-making process, the code currently references BTCUSD. As a result, it is only suitable for crypto traders. However, we are working on the stock and forex versions, and the Performer will have these compatibilities soon.
Most importantly, our signals DO NOT REPAINT !
Recommended Use:
- Time Frame: 1HR
- Asset: Large cap crypto assets.
For lower risk tolerance, we recommend using the indicator on ETHUSD. For maximizing profits, we recommend using the indicator on BCHUSD.
- Always set stop loss according to your own risk tolerance
- Take profits along the way.
Recommended Use for Advanced Traders:
- Position sizing:
Larger position if the 1HR signal is in the same direction compared to the 4HR trend.
Smaller position if the 1HR signal is in the opposite direction compared to the 4HR trend.
- Better entry/exit points:
Track the 1HR signal for the asset you are trading on other exchanges along with the BTCUSD 1HR signal. Sometimes, the signals from different exchanges occur with a 1-2 hour difference. You could use these earlier signals along with a lower time frame (eg. 15min) entry confirmation from your own exchange for better entry / exit points.
Go to www.phi-deltalytics.com and sign up for a FREE trial today!
Let us know if you have any questions or recommendations. We are here for your success!
Disclaimer:
It should not be assumed that the methods, techniques, or indicators presented will be profitable or that they will not result in losses. Past results are not necessarily indicative of future results. This is not a solicitation of any order to buy or sell.
Directional Momentum Flux StrategyDirectional Momentum Flux (DMF) is a compound indicator designed to surface signals of projected change in directional momentum. The primary goal is to identify possible momentum inflection points and signal them before they happen, which is reached by applying a set of well-known high-level indicators (e.g. DEMA, RSIs, CCIs and VWAP), lower-level indicators (e.g. BOP, PPO and RMOMO), and some special sauce brewed in-house by yours truly.
This strategy is invite-only. Invitations are offered for a one-time fee of $250 payable in several cryptocurrencies (ETH, BTC, DASH, XMR or ZEC). Once you've got an invitation, you will automatically receive updates forever*.
DMF was designed to work across multiple asset classes. Extensive backtesting has been performed over multiple sample series (not just during the bull runs, for example) and against a randomized pool of assets. But don't take my word for it, I've included some time-based backtesting support tools to make it easy-peasy for you to validate the results yourself!
Under the hood, DMF is powered by numerous indicators, including:
✓ Double EMA & Composite SMA;
✓ Double RSI (fast & slow, variable);
✓ Composite StochRSI & VWAP (StochRSI+, two series);
✓ Composite Commodity Channel Index (CCI+, two series);
✓ Volume-Weighted Balance of Power (BOP itself was adapted from BOP_LB, kudos to LazyBear);
✓ Percentage Price Oscillator (PPO, split, two series);
✓ Range-adjusted Momentum Oscillator (RMOMO, my fancy MOM variant);
It crunches all that data and generates signals which are issued in two ways:
✓ Vertical Bands (or VBs) - Entry/Exit windows as vertical bands that remain "lit" (e.g. the background of a series of candles is semi-opaque white) while the top-level signals are showing sufficiently strong BUY signals. These windows are the primary entry/exit targets and can be relied upon with sufficient risk mitigation (e.g. a reasonable stop-loss or other scale-out exit mechanism). A VB followed immediately by an egg is as good as gold.
✓ Eggs - Entry/Exit validation signals that confirm the condition indicated by VBs. A lit VB without an egg in the same or next candle session is considered to be valid , but not safe (see above warning). Waiting for an egg can improve performance at the risk of missing the best possible entry point. Consider your risk tolerance and act accordingly.
Basic Instructions:
✓ Configure The Settings! The defaults are pretty good, but don't be scared to try variations. For example, by default SHORT positions are disabled. You might want to enable them if your risk tolerance allows them. (IMO there's gold on both ends of the rainbow. 🌈)
✓ Pay attention to the VBs. If you see a lit band being placed in an otherwise dark area, it's a projected inflection point. This is expected to be validated and confirmed in the same or immediately following period with an egg. You can enter a LONG position at this time.
✓ Pay attention to the eggs. If you see an egg, it's a confirmation that the VB changes in the same or immediately preceding candle period is valid. If you did not enter or exit your position at the point of the VB shift, now is the time to do so.
✓ Watch for the end of a VB period and be prepared to exit your position quickly as the next egg may be accompanied by a large directional momentum inflection.
Things to Note:
📉 - DMF is designed for day trading with aggressive position TTLs (15m was the upper bound during development and strategy testing). It appears to issue valid signals for other intervals, but it was not designed for >15m and YMMV. Don't go manually opening a LONG with no exit strategy and go to sleep... it probably won't work out to your benefit. You should be prepared to exit positions at any time. (Pro tip: automation is your friend!)
💸 - DMF indicator is not free from risk. As with all investment strategies, it is crucial to exercise caution and only trade with funds you are comfortable losing. DMF does not offer any form of guarantee or warranty, implied or otherwise. If you lose money, your house, your 401K... that's on you. (Pro tip: don't risk anything you're not ready to lose, because losses are part of the game and you WILL have them.)
🤔 - By using this indicator, you understand that any and all risks are the sole and complete responsibility of the end user (yeah, that's you). Don't use it if you're not 100% clear that you know exactly what you're doing. (Pro tip: always ask questions if you're feeling confused.)
⏱ - * Forever in this context means that, where room for improvement exists, I will improve it over time and you'll get all updates until I stop making them. (Pro tip: nobody lives forever.)
Megalodon Pro Automated Shorter Term Trader BacktesterSTRATEGY
When to buy: Green bar - Orange bar Closes
When to sell: Purple bar closes
Stop to trailing: No
Stop loss: No
Commission Rate: 1%
Willing to risk per trade: 10%
Maximum possible trades in one direction: 10
RESULTS
Net Profit without 1% commission: 112.64%
Net Profit with 1% commission: 103.92%
Starting Balance: $100,000
Profits Made: $103,918.38
New Balance with 1% commission: $203,918.38
Dates traded: 3/17/2019 and 8/3/2019
Total Close Trades: 80
Percent Profitable: 98.75%
Profit Factor: 152.158
Max Drawdown: 0.35% - $745.14
Buy & Hold Return: 174.66%
Commission Paid: $9621.46
Total Open Trades: 10
Number of Winning Trades: 79
Number of Losing Trades: 1
Avg Win Trade: 1.33%
Avg. Lose Trade: 0.92%
Largest Win Trade: 2.77%
Let me know what you guys think about the results?
Due to the tradingview's limitations on providing the shorter time frame price data, we had to provide a 60 minute time frame backtesting results.
The shorter time frames including 1 minute and 15 minutes backtesting results are way more accurate and precise than 60 minutes time frame results.
Megalodon Trading
Enlightening the Modern Investors
15MEX Momentum ScalperAlpha product project in development. Uses a combination of MACD and T3-CCI with tweaked settings to catch directional momentum and scalp a small move. Strategy is quantity of trades over quality of trades to build profits.
Use this strategy for 15-min Bitmex scalping on XBT contracts only. Recommend 100k contract size or less; backtested with 100k contracts.
Market enter, then use post-only limit exits and stop losses.
Setting is pre-optimized for 0.5% tp target and 0.5% sl of entry price. Recommend default 3 bars as basis for confirming recent MACD crossover as well as default 0.618 Fibonacci ratio as the T3-CCI basis.
Default risk level setting is approximately 2-3 trades a day. You can double the amount to 4-5 trades a day by enabling Aggressive mode. This may lead to larger profits and more entries, but with more frequent stop losses.
Future version will include trailing TPs/stops. Still undergoing optimization and refinement.
RePaNoCHa [Backtest]This is a very long script and adjusting the settings can be a bit slow so I share some settings. (these may be even better)
It has no security() and no Heikin Ashi so no repaint and Backtest is real.
It's important to adjust correctly the tics/pips correction.
All timeframes but good results at 2H
Default settings for ETHUSD (BITMEX) 2H
Alerts version coming soon...
Enjoy!!!
"Este script es la repanocha"
XBTUSD (BITMEX)
Timeframe = 2H
Position Side = BOTH
Source = hlc3
T3 == true
T3 Length = 8
T3 Volume Factor = 0.9
Range Filter+ADX == true
Sampling Period = 16
Range Multiplier = 1.3
Flat Market Trades == true
ADX lenght = 10
ADX Threshold = 20
Parabolic SAR == true
SAR start = 0.03
SAR inc = 0.02
SAR max = 0.3
Pyramiding = 15
Trailing Stop Activation % = 0.5
Trailing Stop Offset % (when profit=0.5 %) = 0.2
Trailing Stop Offset % (when profit=10 %) = 1.2
Stop Loss = 3.2
Tics/Pips Correction = 10
Initial Capital = 1000
Quantity = 100 %
Commission value = 0.075 %
ETHUSD (BITMEX)
Timeframe = 2H
Position Side = BOTH
Source = hlc3
T3 == true
T3 Length = 6
T3 Volume Factor = 0.7
Range Filter+ADX == true
Sampling Period = 10
Range Multiplier = 0.9
Flat Market Trades == true
ADX lenght = 11
ADX Threshold = 19
Parabolic SAR == true
SAR start = 0.06
SAR inc = 0.07
SAR max = 0.15
Pyramiding = 15
Trailing Stop Activation % = 0.5
Trailing Stop Offset % (when profit=0.5 %) = 0.25
Trailing Stop Offset % (when profit=10 %) = 1.5
Stop Loss = 3.2
Tics/Pips Correction = 100
Initial Capital = 1000
Quantity = 100 %
Commission value = 0.075 %
BNBUSDT (BINANCE)
Timeframe = 2H
Position Side = LONG
Source = hlc3
T3 == true
T3 Length = 6
T3 Volume Factor = 0.7
Range Filter+ADX == true
Sampling Period = 17
Range Multiplier = 1.3
Flat Market Trades == true
ADX lenght = 5
ADX Threshold = 18
Parabolic SAR == true
SAR start = 0.04
SAR inc = 0.03
SAR max = 0.25
Pyramiding = 15
Trailing Stop Activation % = 0.5
Trailing Stop Offset % (when profit=0.5 %) = 0.25
Trailing Stop Offset % (when profit=10 %) = 1.5
Stop Loss == false
Tics/Pips Correction = 10000
Initial Capital = 1000
Quantity = 100 %
Commission value = 0.075 %
LTCUSDT (BINANCE)
Timeframe = 2H
Position Side = LONG
Source = hlc3
T3 == true
T3 Length = 3
T3 Volume Factor = 1
Range Filter+ADX == true
Sampling Period = 11
Range Multiplier = 1.1
Flat Market Trades == true
ADX lenght = 6
ADX Threshold = 22
Parabolic SAR == true
SAR start = 0.07
SAR inc = 0.04
SAR max = 0.15
Pyramiding = 15
Trailing Stop Activation % = 0.5
Trailing Stop Offset % (when profit=0.5 %) = 0.25
Trailing Stop Offset % (when profit=10 %) = 1.5
Stop Loss == false
Tics/Pips Correction = 100
Initial Capital = 1000
Quantity = 100 %
Commission value = 0.075 %
TRXUSDT (BINANCE)
Timeframe = 2H
Position Side = LONG
Source = hlc3
T3 == true
T3 Length = 7
T3 Volume Factor = 1
Range Filter+ADX == true
Sampling Period = 8
Range Multiplier = 1.1
Flat Market Trades == true
ADX lenght = 4
ADX Threshold = 22
Parabolic SAR == true
SAR start = 0.07
SAR inc = 0.04
SAR max = 0.15
Pyramiding = 15
Trailing Stop Activation % = 0.5
Trailing Stop Offset % (when profit=0.5 %) = 0.25
Trailing Stop Offset % (when profit=10 %) = 1.5
Stop Loss == false
Tics/Pips Correction = 100000
Initial Capital = 1000
Quantity = 100 %
Commission value = 0.075 %
NAS100 (OANDA)
Timeframe = 2H
Position Side = BOTH
Source = hlc3
T3 == true
T3 Length = 3
T3 Volume Factor = 1
Range Filter+ADX == true
Sampling Period = 12
Range Multiplier = 1.3
Flat Market Trades == true
ADX lenght = 18
ADX Threshold = 21
Parabolic SAR == true
SAR start = 0.08
SAR inc = 0.06
SAR max = 0.25
Pyramiding = 15
Trailing Stop Activation % = 0.2
Trailing Stop Offset % (when profit=0.5 %) = 0.15
Trailing Stop Offset % (when profit=10 %) = 1
Stop Loss == false
Tics/Pips Correction = 10
Initial Capital = 1000
Quantity = 3 contracts
Commission value = 0.2 USD per contract
NATGAS(OANDA)
Timeframe = 2H
Position Side = BOTH
Source = hlc3
T3 == true
T3 Length = 3
T3 Volume Factor = 1
Range Filter+ADX == true
Sampling Period = 15
Range Multiplier = 1.3
Flat Market Trades == true
ADX lenght = 12
ADX Threshold = 21
Parabolic SAR == true
SAR start = 0.08
SAR inc = 0.06
SAR max = 0.4
Pyramiding = 15
Trailing Stop Activation % = 0.2
Trailing Stop Offset % (when profit=0.5 %) = 0.15
Trailing Stop Offset % (when profit=10 %) = 1
Stop Loss == false
Tics/Pips Correction = 1000
Initial Capital = 1000
Quantity = 4500 contracts
Commission value = 0.002 USD per contract
SPX500 (OANDA)
Timeframe = 2H
Position Side = BOTH
Source = hlc3
T3 == true
T3 Length = 4
T3 Volume Factor = 0.8
Range Filter+ADX == true
Sampling Period = 14
Range Multiplier = 1.3
Flat Market Trades == true
ADX lenght = 12
ADX Threshold = 17
Parabolic SAR == true
SAR start = 0.09
SAR inc = 0.04
SAR max = 0.2
Pyramiding = 15
Trailing Stop Activation % = 0.15
Trailing Stop Offset % (when profit=0.5 %) = 0.1
Trailing Stop Offset % (when profit=10 %) = 0.5
Stop Loss = 1.5
Tics/Pips Correction = 10
Initial Capital = 1000
Quantity = 8 contracts
Commission value = 0.2 USD per contract
US30 (OANDA)
Timeframe = 2H
Position Side = BOTH
Source = hlc3
T3 == true
T3 Length = 4
T3 Volume Factor = 0.9
Range Filter+ADX == true
Sampling Period = 11
Range Multiplier = 1.1
Flat Market Trades == true
ADX lenght = 16
ADX Threshold = 24
Parabolic SAR == true
SAR start = 0.08
SAR inc = 0.03
SAR max = 0.05
Pyramiding = 15
Trailing Stop Activation % = 0.15
Trailing Stop Offset % (when profit=0.5 %) = 0.075
Trailing Stop Offset % (when profit=10 %) = 0.5
Stop Loss = 1.5
Tics/Pips Correction = 10
Initial Capital = 1000
Quantity = 1 contracts
Commission value = 1.5 USD per contract
WHEAT (OANDA)
Timeframe = 2H
Position Side = BOTH
Source = hlc3
T3 == true
T3 Length = 3
T3 Volume Factor = 1.1
Range Filter+ADX == true
Sampling Period = 12
Range Multiplier = 0.9
Flat Market Trades == true
ADX lenght = 13
ADX Threshold = 21
Parabolic SAR == true
SAR start = 0.1
SAR inc = 0.05
SAR max = 0.15
Pyramiding = 15
Trailing Stop Activation % = 0.2
Trailing Stop Offset % (when profit=0.5 %) = 0.1
Trailing Stop Offset % (when profit=10 %) = 1
Stop Loss = 2.5
Tics/Pips Correction = 1000
Initial Capital = 1000
Quantity = 2500 contracts
Commission value = 0.003 USD per contract
Trend Follower Strategy (Long Only)Adjusted for Bitcoin.
Long position only.
10% of your balance each time.
Tight stop loss.
Reasonable profit-loss ratio.
Positive return every year.
No repaint.
Bedrock Bot - BTCUSD 30m Scalper BotBedrock Bot trades on BTCUSD charts and is a high frequency scalper bot - for those that like a little more action.
The strategy was developed for use on more recent market conditions - smaller trends within larger sideways ranges. It will work in trends as well. It is made for quick take profits and tight stop losses to maximize overall profit and minimize losses (check out the win ratio and downdraw results). It does not trade on the weekends as much of the volume is now weekday based.
Backtest results look great and we have been running this bot on live markets as well in forward testing with profit results.
These live tests were done exclusively on BitMex and by using automation on Crypto Bots Hub . Monthly returns have been around 8% - you may think this doesn't sound amazing but understand compound interest and do check out the win percentage and downdraw. In these sideways markets, this can keep building your profits slow and steady with minimal risk.
The bot controls entries, stop losses, and take profits as part of the code.
Message me on information to get free access.
Bollinger + RSI, Double Strategy (by ChartArt)Bollinger Bands + RSI, Double Strategy
This strategy uses a slower RSI with period 16 to sell when the RSI increases over the value of 55 (or to buy when the value falls below 45), with the classic Bollinger Bands strategy to sell when the price is above the upper Bollinger Band and falls below it (and to buy when the price is below the lower band and rises above it). This strategy only triggers when both the RSI and the Bollinger Bands indicators are at the same time in the described overbought or oversold condition. In addition there are color alerts which can be deactivated.
This basic strategy is based upon the "RSI Strategy" and "Bollinger Bands Strategy" which were created by Tradingview and uses no money management like a trailing stop loss and no scalping methods. Every win/loss trade is simply counted from the last overbought/oversold condition to the next one.
This strategy does not use close prices from higher-time frame and should not repaint after the current candle has closed. It might repaint like every Tradingview indicator while the current candle hasn't closed.
All trading involves high risk; past performance is not necessarily indicative of future results. Hypothetical or simulated performance results have certain inherent limitations. Unlike an actual performance record, simulated results do not represent actual trading. Also, since the trades have not actually been executed, the results may have under- or over-compensated for the impact, if any, of certain market factors, such as lack of liquidity. Simulated trading programs in general are also subject to the fact that they are designed with the benefit of hindsight. No representation is being made that any account will or is likely to achieve profits or losses similar to those shown.
Mahnam BTC with breake outThis strategy is designed and coded specifically for trading Bitcoin in the 15-minute timeframe.
Of course, those who are skilled in coding can use it in other timeframes and currencies by changing its codes and personalizing it.
Of course, it is strongly recommended that people who want to use it first perform the necessary backtests or test this strategy on demo sites and then trade on the Tetri platform.
In this strategy, it only checks the entry and exit conditions and connects to the exchange using the API code and trades completely automatically.
This strategy determines the stop loss and take profit points on the exchange at the same time as entering the transaction and sets them.
///////////////////////// Code ////////////////////////////////
//@version=5
// Copyright (c) 2021-present, Alex Orekhov (everget)
//indicator('HalfTrend and TMA', overlay=true , max_lines_count = 500, max_labels_count = 500)
strategy(title='Mahnam BTC with breake out', overlay=true , max_bars_back=5000 , max_labels_count= 500 , max_boxes_count = 500,max_lines_count = 500, initial_capital=1000, currency = currency.USDT, default_qty_type=strategy.cash )
import PineCoders/Time/4
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
newyork = '0000-2400' // input.session(title='Session', defval='0000-2400')
time_newyork = time(timeframe.period, newyork)
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// تعیین تاریخ شروع و پایان (بر حسب timestamp یونیکس)
// تنظیمات Input برای تاریخ شروع و پایان
startDate = input.time(timestamp('01 Jan 2025 00:00 UTC'), "📅 تاریخ شروع معاملات", inline="dateRange")
endDate = input.time(timestamp('31 Dec 2025 23:59 UTC'), "📅 تاریخ پایان معاملات", inline="dateRange")
// بررسی اینکه آیا زمان فعلی در بازه مجاز است یا خیر
isTradeEnabled = (time >= startDate) //and (time <= endDate)
///////////////////////////////////////////////////////////////////////////////////////////
// currentTime = time("15", "GMT+0")
// hourOfDay = hour(currentTime)
// notrade_hours1 = input.(12 , minval = 0 , maxval = 24 , title = "Hours Friday")
// notrade_hours2 = input.int(12 , minval = 0 , maxval = 24 , title = "Hours Monday")
////////////////////////////////////////////////////////////Holidays/////////////////////
// تعریف روزهای هفته
isSaturday = dayofweek == dayofweek.saturday //and hourOfDay > 12
isSunday = dayofweek == dayofweek.sunday
// isMonday = dayofweek == dayofweek.monday and hourOfDay < notrade_hours1
// isFriday = dayofweek == dayofweek.friday and hourOfDay > notrade_hours2
// رنگآمیزی پسزمینه برای شنبه (آبی کمرنگ) و یکشنبه (نارنجی کمرنگ)
bgcolor(isSaturday ? color.new(color.blue, 90) : isSunday ? color.new(color.orange, 90) : na)
//bgcolor(isMonday ? color.new(color.white, 90) : isFriday ? color.new(color.green, 90) : na)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//تنظیمات پوزیشن
leverage = input.int(defval = 10 , title = "leverage" , minval = 1 , maxval = 20,step = 5 , group="Posistion Settings==========================================")
quantity = input.float(defval = 500 , title = "quantity" , minval = 1, group="Posistion Settings==========================================")
sl_manager = input.float(defval = 0.5 , step = 0.1 , title = "Risk Percent Of Capital", group="Posistion Settings==========================================")
persent_fee = input.float(defval = 0.05 , title = "Persent Fee Eexchange" , minval = 0 , maxval = 1,step = 0.01 , group="Posistion Settings==========================================")
position_type = input.string(defval = "Buy_And_Sell" , title = "Position_type" , options = , group="Posistion Settings==========================================" )
r_r_long = input.float(defval = 2 , step = 0.1 , title = "R - R =>", group="Posistion Settings==========================================")
r_r_short = r_r_long // input.float(defval = 1.8 , step = 0.1 , title = "r_r Short =>")
//////////////////////////////////////////////////////// END ROC /////////////////////////////////////
day_of_week = input.bool(false , title = "Trade in 7 days", group="Posistion Settings==========================================")
show_tp_sl_ent = true // input.bool(defval=true, title= "Show Tp Sl Ent Box", group="Posistion Settings==========================================")
show_qty = true // input.bool(defval = true , title = "Show Qty Label", group="Posistion Settings==========================================")
//////////////////////////////////////////////////////// Information Position ////////////////////////////////////////////////////
var short_is_open = false
var long_is_open = false
//variant for sell position
var sl1 = 0.0
var tp1 = 0.0
var ent1 = 0.0
var equity1 = 0.0
var qty1 = ""
//variant for buy position
var sl3 = 0.0
var qty2 = ""
var tp3 = 0.0
var ent2 = 0.0
var equity2 = 0.0
symbol = str.tostring(syminfo.basecurrency + "-" + syminfo.currency )
////////////////////////////////////////////////////////////////////////////////////////////////////////
var long_condition = false
var short_condition = false
persent_candel = 0.7 // input.float(defval = 0.7 , step = 0.1 , title = "درصد حرکت آخرین کندل", group="CANDEL Settings==========================================")
////////////////////////////////////////////////////////////////////////////////////////////////////////
amplitude = 2 // input.int(title='Amplitude', defval=2)
channelDeviation =2 //input.int(title='Channel Deviation', defval=2)
showChannels =true // input.bool(title='Show Channels', defval=true)
var int trend = 0
var int nextTrend = 0
var float maxLowPrice = nz(low , low)
var float minHighPrice = nz(high , high)
var float up = 0.0
var float down = 0.0
float atrHigh = 0.0
float atrLow = 0.0
float arrowUp = na
float arrowDown = na
len_atr = 130 // input.int(130 , title = "Len Half Trend")
atr2 = ta.atr(len_atr) / 2
dev = channelDeviation * atr2
highPrice = high
lowPrice = low
highma = ta.sma(high, amplitude)
lowma = ta.sma(low, amplitude)
if nextTrend == 1
maxLowPrice := math.max(lowPrice, maxLowPrice)
if highma < maxLowPrice and close < nz(low , low)
trend := 1
nextTrend := 0
minHighPrice := highPrice
minHighPrice
else
minHighPrice := math.min(highPrice, minHighPrice)
if lowma > minHighPrice and close > nz(high , high)
trend := 0
nextTrend := 1
maxLowPrice := lowPrice
maxLowPrice
if trend == 0
if not na(trend ) and trend != 0
up := na(down ) ? down : down
arrowUp := up - atr2
arrowUp
else
up := na(up ) ? maxLowPrice : math.max(maxLowPrice, up )
up
atrHigh := up + dev
atrLow := up - dev
atrLow
else
if not na(trend ) and trend != 1
down := na(up ) ? up : up
arrowDown := down + atr2
arrowDown
else
down := na(down ) ? minHighPrice : math.min(minHighPrice, down )
down
atrHigh := down + dev
atrLow := down - dev
atrLow
//////////////////////////////////////////////////////////////////////////////////////////////////////////
len_rsi = 14 // input.int(14, group = "RSI Setting=================================")
rsi = ta.rsi(close , len_rsi)
//////////////////////////////////////////////////////////////////////////////////
// محاسبات مربوط به تعیین خطوط حمایت و مقاومت و شکست آنها
show_ATR = input.bool(false)
lookback_15 = 4 // input.int(4, title = "====>Look Back 1H=====>", inline = "2", group = "Setting Pivot======================", tooltip = "Drawing support and resistance in time frame 15 min in selected look back")
pl60 = fixnan(ta.pivotlow( low , lookback_15 , lookback_15 ))
ph60 = fixnan(ta.pivothigh( high , lookback_15 , lookback_15 ))
plot(show_ATR ? pl60 : na , color = color.red)
plot(show_ATR ? ph60 : na , color = color.green)
//////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
len_ema_fast_long = 2 // input.int(2)
sorce_tma_long = low // input.source(low)
ema_fast_long = ta.ema(sorce_tma_long , len_ema_fast_long)
len_ema_slow_long = 25 // input.int(25)
ema_slow_long = ta.ema(sorce_tma_long , len_ema_slow_long)
//**********************************
len_ema_fast_short = 2 // input.int(2)
sorce_tma_short = high // input.source(close)
ema_fast_short = ta.ema(sorce_tma_short , len_ema_fast_short)
len_ema_slow_short = 25 // input.int(25)
ema_slow_short = ta.ema(sorce_tma_short , len_ema_slow_short)
///////////////////////////////////////////////////////////////////////////////////////////////////////////
bars = 2 // input.int(9,title="Volume Previous bars to check")
//one_side = input.bool(false, title="Positive values only")
float volume_up = 0
float volume_down = 0
for i = 0 to bars
if (close >open )
volume_up:=volume_up+volume
else
volume_down:=volume_down+volume
total_up_down_vol= volume_up-volume_down
vol_bb = 8 // input.int(8)
vol_aa = 2 // input.int(2)
pivot_high_vol = fixnan(ta.pivothigh(total_up_down_vol , vol_bb , vol_aa ))
pivot_low_vol = fixnan(ta.pivotlow(total_up_down_vol , vol_bb , vol_aa ))
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
CLOSE = close
LOW = low
HIGH = high
//////////////////////////////////////////////////////////////////////////////////
//
//reg_trend_on = input(true, 'Activate Reg Trend Line')
length_bull_bear = 4 // input.int(defval= 4, title='🔹 Length Reg Trend line=', minval=1)
//
BullTrend_hist = 0.0
BearTrend_hist = 0.0
BullTrend = (CLOSE - ta.lowest(LOW, length_bull_bear)) / (ta.sma(ta.tr(true), length_bull_bear ))
BearTrend = (ta.highest(HIGH, length_bull_bear) - CLOSE) / (ta.sma(ta.tr(true), length_bull_bear ))
BearTrend2 = -1 * BearTrend
Trend = BullTrend - BearTrend
// plot columun
if BullTrend < 2
BullTrend_hist := BullTrend - 2
BullTrend_hist
if BearTrend2 > -2
BearTrend_hist := BearTrend2 + 2
BearTrend_hist
//alexgrover-Regression Line Formula
x = bar_index
y = Trend
x_ = ta.sma(x, length_bull_bear)
y_ = ta.sma(y, length_bull_bear)
mx = ta.stdev(x, length_bull_bear)
my = ta.stdev(y, length_bull_bear)
c = ta.correlation(x, y, length_bull_bear)
slope = c * (my / mx)
inter = y_ - slope * x_
reg_trend = x * slope + inter
/////////////////////////////////////////////////
long2 = true
short2 = true
close_H = request.security("" , "" , close )
open_H = request.security("" , "" , open )
if close_H > open_H and close_H > open_H
short2 := false
if close_H < open_H and close_H < open_H
long2 := false
nnn = 1.4 // input.float(1.4 , step = 0.1)
long_1 = BullTrend > nnn and ta.sma(reg_trend , 4 ) > ta.sma(reg_trend , 8 )
short_1 = BearTrend2 < -nnn and ta.sma(reg_trend , 4 ) < ta.sma(reg_trend , 8 )
///////////////////////////////////////////////////
lensig_mdi = 8 // input.int(8, title="ADX Smoothing", minval=1)
len_mdi = 2 // input.int(2, minval=1, title="DI Length")
up_mdi = ta.change(high)
down_mdi = -ta.change(low)
plusDM = na(up_mdi) ? na : (up_mdi > down_mdi and up_mdi > 0 ? up_mdi : 0)
minusDM = na(down_mdi) ? na : (down_mdi > up_mdi and down_mdi > 0 ? down_mdi : 0)
trur_mdi = ta.rma(ta.tr, len_mdi)
plus_mdi = fixnan(100 * ta.rma(plusDM, len_mdi) / trur_mdi)
minus_mdi = fixnan(100 * ta.rma(minusDM, len_mdi) / trur_mdi)
sum = plus_mdi + minus_mdi
adx = 100 * ta.rma(math.abs(plus_mdi - minus_mdi) / (sum == 0 ? 1 : sum), lensig_mdi)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// تنظیمات SuperTrend
atrPeriod = 28 // input(28, title="ATR Period Super Trend")
factor = 3 // input(3.0, title="Multiplier")
= ta.supertrend(factor, atrPeriod)
// تعریف تایمفریمهای بالاتر
htf0 = "30" // input.timeframe("30", title="تایمفریم تأیید اول (1H)")
htf1 = "60" // input.timeframe("60", title=" ایمفریم تأیید دوم (1H)")
htf2 = "240" // input.timeframe("240", title="تایمفریم تأیید سوم (4H)")
// محاسبه SuperTrend در تایمفریمهای بالاتر
supertrend1 = request.security(syminfo.tickerid, htf0, supertrend)
direction1 = request.security(syminfo.tickerid, htf0, direction)
supertrend1H = request.security(syminfo.tickerid, htf1, supertrend )
direction1H = request.security(syminfo.tickerid, htf1, direction)
supertrend4H = request.security(syminfo.tickerid, htf2, supertrend )
direction4H = request.security(syminfo.tickerid, htf2, direction)
// شرایط ورود
Condition_supertrend_long = (direction1H > 0 or direction4H > 0 or direction1 > 0) and volume > fixnan(ta.pivotlow(volume , 16 , 2 ))
Condition_supertrend_short = (direction1H < 0 or direction4H < 0 or direction1 < 0) and volume > fixnan(ta.pivotlow(volume , 16 , 2 ))
//////////////////////////////////////////////////////////////////////////////////////////////////////////
open_4h = request.security("" , "240" , open )
close_4h = request.security("" , "240" , close )
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
if day_of_week == false
if isTradeEnabled == true and time == time_newyork and not isSaturday and not isSunday //and not isFriday and not isMonday
long_condition := long_is_open == false and short_is_open == false and total_up_down_vol > pivot_low_vol and rsi > 51 and rsi < 80
and math.abs(close - open) < (persent_candel/100) * close and ema_fast_long > ema_slow_long and high > ph60 and open < ph60 and long_1 == true and long2 == true
and plus_mdi > minus_mdi and Condition_supertrend_long == true and high > close_4h and close > atrHigh
short_condition := long_is_open == false and short_is_open == false and total_up_down_vol > pivot_low_vol and rsi < 49 and rsi > 20
and math.abs(close - open) < (persent_candel/100) * close and ema_fast_short < ema_slow_short and low < pl60 and open > pl60 and short_1 == true and short2 == true
and plus_mdi < minus_mdi and Condition_supertrend_short == true and low < close_4h and close < atrLow
if day_of_week == true
if isTradeEnabled == true and time == time_newyork
long_condition := long_is_open == false and short_is_open == false and total_up_down_vol > pivot_low_vol and rsi > 51 and rsi < 80
and math.abs(close - open) < (persent_candel/100) * close and ema_fast_long > ema_slow_long and high > ph60 and open < ph60 and long_1 == true and long2 == true
and plus_mdi > minus_mdi and Condition_supertrend_long == true and high > close_4h and close > atrHigh
short_condition := long_is_open == false and short_is_open == false and total_up_down_vol > pivot_low_vol and rsi < 49 and rsi > 20
and math.abs(close - open) < (persent_candel/100) * close and ema_fast_short < ema_slow_short and low < pl60 and open > pl60 and short_1 == true and short2 == true
and plus_mdi < minus_mdi and Condition_supertrend_short == true and low < close_4h and close < atrLow
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//تنظیمات استاپ سل پوزیشن شورت و لانگ بر اساس ATR
length_atr = 2 // input.int(title='Length', defval=2, minval=1, group = "StopLoss Setting=================================")
m = 0.9 // input.float(0.9,step = 0.1,title = 'Multiplier', group = "StopLoss Setting=================================")
show_atr = false // input.bool(false, group = "StopLoss Setting=================================")
src1_atr = high //input(high , title = "Stoploss Short")
src2_atr = low //input(low ,title = "Stoploss Long")
collong_atr = color.rgb(0,255,0,0)
colshort_atr = color.rgb(255,0,0,0)
a1 = (ta.sma(ta.tr(true), length_atr) * m) / 2 + (ta.wma(ta.tr(true), length_atr) * m) / 2
stop_loss_short = src1_atr + a1
stop_loss_long = src2_atr - a1
p1_atr1 = plot(show_atr ? stop_loss_long : na, title='ATR Short Stop Loss', color=colshort_atr, style=plot.style_circles)
p2_atr1 = plot(show_atr ? stop_loss_short : na, title='ATR Long Stop Loss', color=collong_atr, style=plot.style_circles)
/////////////////////////////////////////////////////////////////Start Stop Loss///////////////////////////////////////////////
/////////////////////////////////////////////////////////////////END Stop Loss///////////////////////////////////////////////
var total_long_trade = 0
var loss_long = 0
var profit_long = 0
var sood_pos_long = 0.00
var zarar_pos_long = 0.00
var kol_sood_long = 0.00
var total_short_trade = 0
var loss_short = 0
var profit_short = 0
var sood_pos_short = 0.00
var zarar_pos_short = 0.00
var kol_sood_short = 0.00
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ━━━━━━━━━━━━━━━━━━ تنظیمات ورودی ━━━━━━━━━━━━━━━━━━
var int candlesToWait = 12 // input.int(1, "تعداد کندلهای انتظار پس از معامله", minval=1)
// ━━━━━━━━━━━━━━━━━━ شناسایی آخرین معامله ━━━━━━━━━━━━━━━━━━
var int lastTradeCloseBar = na
var bool isCoolDownOver = true
// اگر معاملهای بسته شد، شماره کندل آن را ذخیره کن
if strategy.closedtrades > 0 and (na(lastTradeCloseBar) or strategy.closedtrades != strategy.closedtrades )
lastTradeCloseBar := bar_index
isCoolDownOver := false
// بررسی آیا تعداد کندلهای موردنظر گذشته است؟
if not na(lastTradeCloseBar) and (bar_index - lastTradeCloseBar) >= candlesToWait
isCoolDownOver := true
bgcolor(isCoolDownOver ? na : color.new(color.red, 90), title="Cooldown Status")
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// تنظیمات دستورات لازم برای ارسال به صرافی جهت پوزیشن لانگ
//ADD_quantity = 1.5 // input.float(2 , title = "در صورت واگرایی ماجین رو چند بابر کنم؟")
if position_type == "Buy" or position_type == "Buy_And_Sell"
if long_condition and isCoolDownOver
ent2 := close
sl3 :=stop_loss_long - (stop_loss_long * (0.5 / leverage) / 100 )
tp3 := ent2 + ((ent2 - sl3) * r_r_long)
number_coin = ((quantity * leverage * sl_manager) / ((ent2 - sl3) *100))
equity2 := math.round ((number_coin * close ) , 3)
if equity2 > quantity * leverage
equity2 := quantity * leverage
//////////////////////////////////////////////////////////////////////////////////
if show_qty
label.new(bar_index , low , str.tostring(equity2) + "$" , color = color.rgb(0, 255, 0,0) , size = size.normal , style = label.style_label_up)
strategy.entry(id="buy", direction = strategy.long , qty=(equity2/close) )
if close >= 10 and close < 500
qty2 := str.tostring(math.round(equity2/close , 2))
else
qty2 := str.tostring(math.round(equity2/close , 0))
if close > 500
qty2 := str.tostring(math.round(equity2/close , 3 ))
if symbol == "AAVEUSDT"
qty2 := str.tostring(math.round(equity2/close , 1))
// ================/ برای باز کردن پوزیشن از این مقدار استفاده میکند /======================
message1 = '{"symbol":"'+symbol+'","type":"MARKET", "side":"BUY", "positionSide": "LONG", "quantity":"'+qty2+'","leverage": "'+str.tostring(leverage)+'","marginMode": "Isolated","botmix-action":"open-market-order-v2"}'
// message1 = '{ "side":"Ask","symbol":"'+symbol+'","tradeType":"Market","entrustVolume":"'+qty1+'","action":"Open","marginMode":"Isolated","leverage":"'+str.tostring(leverage)+'", "takerProfitPrice":"'+str.tostring(tp1)+'","stopLossPrice":"'+str.tostring(sl1)+'","botmix-action":"open-market-order" }'
// message1 = '{ "batchOrders": ,"botmix-action":"open-multiple-order" }'
alert(message1 , alert.freq_once_per_bar)
message2 = '{"symbol":"'+symbol+'","type":"LIMIT","side":"SELL", "positionSide": "LONG","delay": 5 ,"quantity":"'+qty2+'","price": "'+str.tostring(tp3)+'", "botmix-action":"open-market-order-v2"}'
alert(message2 , alert.freq_once_per_bar)
message3 = '{"symbol":"'+symbol+'","type":"STOP_MARKET","side":"SELL","positionSide": "LONG","delay": 10 ,"quantity":"'+qty2+'","price": "'+str.tostring(sl3)+'", "stopPrice": "'+str.tostring(sl3)+'","botmix-action":"open-market-order-v2"}'
alert(message3 , alert.freq_once_per_bar)
long_is_open := true
if show_tp_sl_ent
line.new(bar_index, tp3, bar_index + 15, tp3, xloc= xloc.bar_index, color= color.rgb(0, 255, 0,0 ), width = 1)
box.new(bar_index , tp3 , bar_index + 15 , ent2 ,bgcolor = color.rgb(0, 255, 0 , 90) , border_color = color.rgb(0, 255, 0 , 80) )
line.new(bar_index, (tp3 - ((tp3 - ent2) /2)), bar_index + 15, (tp3 - ((tp3 - ent2) /2)), xloc= xloc.bar_index, color= color.rgb(0, 17, 255), width = 2 , style = line.style_dashed)
line.new(bar_index, sl3, bar_index + 15, sl3, xloc= xloc.bar_index, color= color.rgb(255, 0, 0,0), width = 1)
box.new(bar_index , sl3 , bar_index + 15 , ent2 ,bgcolor = color.rgb(255, 0, 0, 90) , border_color = color.rgb(255, 0, 0 , 80) )
line.new(bar_index , ent2 , bar_index + 15 , ent2 , color = color.rgb(255, 255, 0, 0))
/////////////////////////////////////////////////////////
total_long_trade := total_long_trade + 1
if low <= sl3 and long_is_open == true
loss_long := loss_long + 1
zarar_pos_long := zarar_pos_long + (((ent2 - sl3) / ent2) * equity2)
if high >= tp3 and long_is_open == true
profit_long := profit_long + 1
sood_pos_long := sood_pos_long +(((tp3 - ent2) / ent2) * equity2)
kol_sood_long := sood_pos_long - zarar_pos_long
/////////////////////////////////////////////////////////////
if (low <= sl3 or high >= tp3) and long_is_open == true
long_is_open := false
strategy.exit( id = "buy" , from_entry = "buy" , limit = tp3 , stop = sl3 , qty_percent = 100 , comment_profit = "tp" , comment_loss = "sl" )
color_kol_pos_long = kol_sood_long >0 ? color.rgb(0,255,0) : color.rgb(255,0,0)
// //////////////////////LONG___ENNNDD//////////////////////////////////////////////////////////
// تظیمات دستورات لازم برای ارسال به صرافی جهت پوزیشن شورت
if position_type == "Sell" or position_type == "Buy_And_Sell"
if short_condition and isCoolDownOver
ent1 := close
sl1 :=stop_loss_short + (stop_loss_short * (0.5 / leverage) / 100 )
tp1 := ent1 - ((sl1 - ent1 ) * r_r_short)
number_coin = ((quantity * leverage * sl_manager) / ((sl1 - ent1) *100))
equity1 := math.round ((number_coin * close ) , 3)
if equity1 > quantity * leverage
equity1 := quantity * leverage
/////////////////////////////////////////////////////////////////////////////////////////
if show_qty
label.new(bar_index , high , str.tostring(equity1) + "$" , color = color.rgb(255, 0, 0,0) , size = size.normal , style = label.style_label_down)
strategy.entry(id="sell", direction = strategy.short, qty=(equity1/close) )
if close >= 10 and close < 500
qty1 := str.tostring(math.round(equity1/close , 2))
else
qty1 := str.tostring(math.round(equity1/close , 0))
if close > 500
qty1 := str.tostring(math.round(equity1/close , 3))
if symbol == "AAVEUSDT"
qty1 := str.tostring(math.round(equity1/close , 1))
// ================/ برای باز کردن پوزیشن از این مقدار استفاده میکند /======================
message1 = '{"symbol":"'+symbol+'","type":"MARKET", "side":"SELL", "positionSide": "SHORT", "quantity":"'+qty1+'","leverage": "'+str.tostring(leverage)+'","marginMode": "Isolated","botmix-action":"open-market-order-v2"}'
// message1 = '{ "side":"Ask","symbol":"'+symbol+'","tradeType":"Market","entrustVolume":"'+qty1+'","action":"Open","marginMode":"Isolated","leverage":"'+str.tostring(leverage)+'", "takerProfitPrice":"'+str.tostring(tp1)+'","stopLossPrice":"'+str.tostring(sl1)+'","botmix-action":"open-market-order" }'
// message1 = '{ "batchOrders": ,"botmix-action":"open-multiple-order" }'
alert(message1 , alert.freq_once_per_bar)
message2 = '{"symbol":"'+symbol+'","type":"LIMIT","side":"BUY", "positionSide": "SHORT","delay": 5 ,"quantity":"'+qty1+'","price": "'+str.tostring(tp1)+'", "botmix-action":"open-market-order-v2"}'
alert(message2 , alert.freq_once_per_bar)
message3 = '{"symbol":"'+symbol+'","type":"STOP_MARKET","side":"BUY","positionSide": "SHORT","delay": 10 ,"quantity":"'+qty1+'","price": "'+str.tostring(sl1)+'", "stopPrice": "'+str.tostring(sl1)+'","botmix-action":"open-market-order-v2"}'
alert(message3 , alert.freq_once_per_bar)
short_is_open := true
if show_tp_sl_ent
line.new(bar_index, tp1, bar_index + 15, tp1, xloc= xloc.bar_index, color= color.rgb(0, 255, 0,0 ), width = 1)
box.new(bar_index , tp1 , bar_index + 15 , ent1 ,bgcolor = color.rgb(0, 255, 0 , 90) , border_color = color.rgb(0, 255, 0 , 80) )
line.new(bar_index, (tp1+((ent1 - tp1)/2)), bar_index + 15, (tp1+((ent1 - tp1)/2)), xloc= xloc.bar_index, color= color.rgb(4, 0, 255), width = 2 , style= line.style_dashed)
line.new(bar_index, sl1, bar_index + 15, sl1, xloc= xloc.bar_index, color= color.rgb(255, 0, 0,50), width = 1)
box.new(bar_index , sl1 , bar_index + 15 , ent1 ,bgcolor = color.rgb(255, 0, 0, 90) , border_color = color.rgb(255, 0, 0 , 80) )
line.new(bar_index , ent1 , bar_index + 15 , ent1 , color = color.rgb(255, 255, 0,0))
////////////////////////////////////////////////////////////////////////////////////
total_short_trade := total_short_trade + 1
if high >= sl1 and short_is_open == true
loss_short := loss_long + 1
zarar_pos_short := zarar_pos_short + (((sl1 - ent1) / ent1) * equity1)
if low <= tp1 and short_is_open == true
profit_short := profit_short + 1
sood_pos_short := sood_pos_short +(((ent1 - tp1) / ent1) * equity1)
kol_sood_short := sood_pos_short - zarar_pos_short
///////////////////////////////////////////////////////////////////////////////////
if (high >= sl1 or low <= tp1 ) and short_is_open == true
short_is_open := false
strategy.exit( id = "sellext1" , from_entry = "sell" , limit = tp1 , stop = sl1 , qty_percent = 100 , comment_profit = "tp" , comment_loss = "sl" )
color_kol_pos_short = kol_sood_short > 0 ? color.rgb(0,255,0) : color.rgb(255,0,0)
////////////////////////////////////////////////////////////////////////////////////////////
kol_trade = loss_short + loss_long + profit_long + profit_short
/////////////////////SHORT___ENNNDD//////////////////////////////////////////////////////
closed_trades = (loss_short + loss_long + profit_long + profit_short) // strategy.closedtrades
kolfee = (closed_trades * quantity * leverage * persent_fee) / 100
net_profit = math.round((kol_sood_short + kol_sood_long) , 2 ) - kolfee
net_percent = math.round((net_profit / quantity) * 100 , 2)
win_rate = math.round(((profit_long + profit_short) / kol_trade) * 100 , 2) //math.round((strategy.wintrades / strategy.closedtrades) * 100 , 2)
ending = math.round((quantity + net_profit) , 2)
profit_factor = math.round((sood_pos_long + sood_pos_short) / math.abs(zarar_pos_long + zarar_pos_short) , 2)
drow_down = math.round((strategy.max_drawdown / quantity) * 100, 2 )
show_reportTabel = input.bool(true)
if show_reportTabel
table_color = color.rgb(0, 0, 0)
var table result_table = table.new(position.top_right, 30, 40, bgcolor=color.rgb(255,255,255,0), frame_color=color.rgb(0, 0, 0,0), frame_width=1, border_width=2)
table.cell(result_table , column = 0 , row = 0 , text = "TEST BTC with breake out:\n" + str.tostring(kol_trade) , bgcolor = table_color , text_color = color.rgb(255,255,255,0))
table.cell(result_table , column = 1 , row = 0 , text = "starting:\n" + str.tostring(quantity) + "$" , bgcolor = table_color, text_color = color.rgb(255,255,255,0))
table.cell(result_table , column = 2 , row = 0 , text = "Net Profit:\n" + str.tostring(net_profit) + "$:\n" + " fee = " + str.tostring(kolfee) , bgcolor = table_color, text_color = net_profit > 0 ? color.rgb(0,255,0,0) : color.rgb(255,0,0,0))
table.cell(result_table , column = 0 , row = 1 , text = "Win Rate:\n" + str.tostring(win_rate) + "%" , bgcolor = table_color, text_color = color.rgb(255,255,255,0))
table.cell(result_table , column = 1 , row = 1 , text = "Ending:\n" + str.tostring(ending) + "$" , bgcolor = table_color, text_color = color.rgb(255,255,255,0))
table.cell(result_table , column = 2 , row = 1 , text = "Profit Factor:\n" + str.tostring(profit_factor) , bgcolor = table_color, text_color = color.rgb(255,255,255,0))
table.cell(result_table , column = 3 , row = 0 , text = "Net Percent:\n" + str.tostring(net_percent) + "%" , bgcolor = table_color, text_color = net_percent > 0 ? color.rgb(0,255,0,0) : color.rgb(255,0,0,0))
table.cell(result_table , column = 3 , row = 1 , text = "Draw Down:\n" + str.tostring(drow_down) + "%" , bgcolor = table_color, text_color = color.rgb(255,255,255,0))
table.cell(result_table , column = 4 , row = 0 , text = "Stop:\n" + "Short =" + str.tostring(loss_short)+ "\n" +"Long =" + str.tostring(loss_long) , bgcolor = table_color, text_color = color.rgb(255,0,0,0))
table.cell(result_table , column = 4 , row = 1 , text = "TP:\n" + "Short =" + str.tostring(profit_short)+ "\n" +"Long =" + str.tostring(profit_long) , bgcolor = table_color, text_color = color.rgb(0,255,0,0))
table.cell(result_table , column = 5 , row = 0 , text = "Short:\n" + "sood =" + str.tostring(math.round(sood_pos_short,2)) + "\n" + "Zarar =" + str.tostring(math.round(zarar_pos_short,2)) , bgcolor = table_color, text_color = color.rgb(0,255,0,0))
table.cell(result_table , column = 5 , row = 1 , text = "Long:\n" + "sood =" + str.tostring(math.round(sood_pos_long,2)) + "\n" + "Zarar =" + str.tostring(math.round(zarar_pos_long,2)) , bgcolor = table_color, text_color = color.rgb(0,255,0,0))
table.cell(result_table , column = 6 , row = 0 , text = "Kol Sood Short:\n" + "Short =" + str.tostring(math.round(kol_sood_short,2)) , bgcolor = table_color, text_color = color_kol_pos_short)
table.cell(result_table , column = 6 , row = 1 , text = "Kol Sood Long:\n" + "LONG =" + str.tostring(math.round(kol_sood_long,2)) , bgcolor = table_color, text_color = color_kol_pos_long)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //////////////////////////////////////////////////////////////////////////////////////////////////////
// // ********** تنظیمات **********
// show_monthly_Report = input.bool(false, "نمایش گزارش ماهیانه")
// exchange_fee_percent = 0.05 / 100 // input.float(0.05, "کارمزد صرافی (%)", step=0.01) / 100
// indicator_name = 'BTC with breake out' // input.string("تحلیلگر حرفه ای - گزارش ماهیانه", "عنوان اندیکاتور")
// show_total_row = true // input.bool(true, "نمایش سطر جمع کل")
// // ********** ایجاد جدول **********
// var table monthlyReport = table.new(position = position.top_right, columns = 6,rows = 21,bgcolor = color.rgb(33, 33, 33),
// border_width = 2,border_color = color.rgb(80, 80, 80),frame_width = 1,frame_color = color.rgb(50, 50, 50))
// // ********** متغیرهای ماهیانه **********
// var int currentMonth = na
// var int monthTrades = 0
// var int monthWinningTrades = 0
// var float totalFees = 0.0
// var float monthNetProfit = 0.0
// // ********** متغیرهای جمع کل **********
// var float totalAllTrades = 0.0
// var float totalAllFees = 0.0
// var float totalAllNetProfit = 0.0
// var int totalAllWinningTrades = 0
// var int totalAllMonths = 0
// // ********** تشخیص تغییر ماه **********
// isNewMonth = ta.change(month) or ta.change(year)
// // ********** محاسبات معاملات **********
// tradeClosed = strategy.closedtrades > strategy.closedtrades
// if tradeClosed
// lastTradeIndex = strategy.closedtrades - 1
// tradeSize = math.abs(strategy.closedtrades.size(lastTradeIndex) * strategy.closedtrades.exit_price(lastTradeIndex))
// tradeFee = tradeSize * exchange_fee_percent
// totalFees := totalFees + tradeFee
// tradeProfit = strategy.closedtrades.profit(lastTradeIndex)
// monthNetProfit := monthNetProfit + tradeProfit
// monthTrades := monthTrades + 1
// if tradeProfit > 0
// monthWinningTrades := monthWinningTrades + 1
// // ********** مدیریت گزارش ماهیانه **********
// if isNewMonth and show_monthly_Report and not na(currentMonth)
// // محاسبات ماهانه
// grossProfit = monthNetProfit
// netProfit = grossProfit - totalFees
// winRate = monthTrades > 0 ? (monthWinningTrades/monthTrades)*100 : 0
// // به روزرسانی جمع کل
// totalAllTrades := totalAllTrades + monthTrades
// totalAllFees := totalAllFees + totalFees
// totalAllNetProfit := totalAllNetProfit + netProfit
// totalAllWinningTrades := totalAllWinningTrades + monthWinningTrades
// totalAllMonths := totalAllMonths + 1
// // نمایش در جدول
// row = (month % 12 == 0 ? 12 : month % 12) + 2 // +2 برای جا دادن سطرهای عنوان
// monthName = str.tostring(year ) + "-" + str.tostring(month , "00")
// table.cell(monthlyReport, 0, row, monthName, text_color=color.white)
// table.cell(monthlyReport, 1, row, str.tostring(monthTrades), text_color=color.white)
// table.cell(monthlyReport, 2, row, str.tostring(grossProfit, "0.00") + " $")
// table.cell(monthlyReport, 3, row, str.tostring(totalFees, "0.00") + " $")
// table.cell(monthlyReport, 4, row, str.tostring(netProfit, "0.00") + " $")
// table.cell(monthlyReport, 5, row, str.tostring(winRate, "1.0") + "%")
// // رنگ آمیزی سود/زیان
// textColor = netProfit >= 0 ? color.rgb(0, 200, 0) : color.rgb(200, 0, 0)
// for i = 2 to 5
// table.cell_set_text_color(monthlyReport, i, row, textColor)
// // ********** سطر جمع کل **********
// if show_monthly_Report and show_total_row and totalAllMonths > 0
// totalWinRate = totalAllTrades > 0 ? (totalAllWinningTrades/totalAllTrades)*100 : 0
// table.cell(monthlyReport, 0, 15, "جمع کل (" + str.tostring(totalAllMonths) + " ماه)",
// text_color=color.yellow,
// bgcolor=color.rgb(50, 50, 50),
// width=6)
// table.cell(monthlyReport, 1, 15, str.tostring(totalAllTrades),
// text_color=color.yellow,
// bgcolor=color.rgb(50, 50, 50))
// table.cell(monthlyReport, 2, 15, str.tostring(totalAllNetProfit + totalAllFees, "0.00") + " $",
// text_color=color.yellow,
// bgcolor=color.rgb(50, 50, 50))
// table.cell(monthlyReport, 3, 15, str.tostring(totalAllFees, "0.00") + " $",
// text_color=color.yellow,
// bgcolor=color.rgb(50, 50, 50))
// table.cell(monthlyReport, 4, 15, str.tostring(totalAllNetProfit, "0.00") + " $",
// text_color = totalAllNetProfit >= 0 ? color.green : color.red,
// bgcolor=color.rgb(50, 50, 50))
// table.cell(monthlyReport, 5, 15, str.tostring(totalWinRate, "1.0") + "%",
// text_color=color.yellow,
// bgcolor=color.rgb(50, 50, 50))
// // ********** ریست ماهیانه **********
// if isNewMonth
// currentMonth := month
// monthTrades := 0
// monthWinningTrades := 0
// totalFees := 0.0
// monthNetProfit := 0.0
// // ********** عنوانهای جدول **********
// if barstate.isfirst and show_monthly_Report
// // عنوان اصلی (یکپارچه در سطر اول)
// table.cell(
// monthlyReport,
// column = 4, // ستون شروع (0 = اولین ستون)
// row = 0, // ردیف 0 (اولین ردیف)
// text = indicator_name,
// bgcolor = color.rgb(0, 0, 0),
// text_size = size.small,
// text_color = color.rgb(255,255,0),
// width = 12, // گسترش روی تمام 6 ستون
// height = 4 // ارتفاع بیشتر برای وضوح بهتر
// )
// // عنوان ستونها (در ردیف دوم)
// headers = array.from("ماه", "تعداد", "سود ناخالص", "کارمزد", "سود خالص", "نرخ برد")
// for i = 0 to 5
// table.cell(
// monthlyReport,
// column = i,
// row = 1, // ردیف بعد از عنوان اصلی
// text = array.get(headers, i),
// text_color = color.white,
// bgcolor = color.rgb(60, 60, 60),
// width = 1 // عرض معمولی برای هر ستون
// )
BTC High Low Auto Trader Fixed"BTC High Low Auto Trader Fixed", is a swing-based auto-trading system designed to trade Bitcoin (BTC) using price action around recent highs and lows, with risk controls and an optional trend filter. Here's a clear and structured breakdown:
🔍 Strategy Overview
Name: BTC High Low Auto Trader Fixed
Core Idea: Buy near local swing lows and sell near swing highs, optionally filtered by EMA trend direction.
📌 Key Components
1. Swing High/Low Detection (Trade Signals)
A Swing Low is detected when the current bar’s low is the lowest in a lookback window (default: 5 bars before and after).
A Swing High is detected when the current bar’s high is the highest in the same lookback window.
2. Trade Conditions
Long Entry: On a Swing Low.
Short Entry: On a Swing High.
Shorts are filtered if Use EMA Filter is enabled: only allowed when price is below the EMA (i.e., in a downtrend).
3. Risk Management
Stop Loss (%): A fixed % below (long) or above (short) the entry price (default: 1%).
Take Profit (%): A fixed % above (long) or below (short) the entry price (default: 2%).
Trailing Stop (optional): Adjusts the stop loss dynamically as price moves in your favor (default: off).
4. Position Management
Only one trade at a time: the script avoids opening new trades if a position is already open.
Uses a fixed position size (contracts or lots), not percentage of equity.
5. Trend Filter (Optional)
Uses a 200-period EMA to determine trend direction.
When enabled:
Shorts only allowed if price is below the EMA (downtrend).
Longs are always allowed.
📈 Visual Features
Labels mark Buy and Sell points.
Shapes highlight Swing Highs and Lows on the chart.
Dynamic EMA Line changes color based on trend:
Green: Uptrend (price above EMA)
Red: Downtrend (price below EMA)
Optional lines for stop loss and take profit levels.
⚙️ User-Configurable Inputs
Parameter Description Default
Lookback Period Number of bars used to detect swings 5
Stop Loss % % distance from entry for stop loss 1.0%
Take Profit % % distance from entry for take profit 2.0%
Use Trailing Stop Whether to enable dynamic trailing stop false
Trailing Stop % Distance for trailing stop (if enabled) 0.5%
Use EMA Filter Enable trend filter for shorts true
EMA Length EMA period for trend filter 200
Position Size Number of contracts per trade 1.0
🧠 Trading Logic Summary
Buy (Long):
When price forms a swing low.
Execute with SL/TP or trailing stop.
Optional labels/plotting.
Sell (Short):
When price forms a swing high.
Only if price is below the EMA (if trend filter enabled).
Execute with SL/TP or trailing stop.
No pyramiding: One position at a time, avoiding duplicate entries.
📊 Backtesting
Default starting capital: $10,000
Strategy results visible in TradingView’s Strategy Tester:
Net profit/loss
Win rate
Max drawdown
Trade count
Sharpe ratio
TrendStrike PRO X🧠 TrendStrike Pro X — Advanced Trend-Following Strategy
TrendStrike Pro X is a precision-engineered trading system designed for trending markets. It combines price action with a multi-layered confirmation model to generate high-quality trade signals.
________________________________________
🚀 Core Logic
This strategy uses a dual-filter approach based on:
• Trend Detection: A crossover between fast and slow EMAs confirms directional bias.
• Entry Signal: A strict single-candle engulfing pattern serves as the trigger, providing clean entries aligned with market momentum.
• Signals only appear when both conditions align, increasing the probability of success and reducing noise.
________________________________________
🎯 Risk Management & Performance
Each trade dynamically calculates risk parameters:
• Stop Loss: Dynamically calculated based on price distance from EMA structure plus a volatility buffer.
• Take Profit: Always fixed at a 1:2 Risk-Reward Ratio.
• Risk Per Trade: Set at 0.5% of the account balance (configurable externally via position sizing).
📊 With a consistent 1:2 RR, the strategy only requires a 50% win rate to remain profitable. In forward testing and live conditions, the average win rate ranges between 62% and 68% depending on market volatility and asset class.
________________________________________
⏱️ Recommended Timeframes
• Works across all timeframes and assets.
• Optimized for 5-minute and 15-minute charts, especially on high-volume pairs or commodities like NAS100 and XAUUSD.
________________________________________
⚠️ Market Conditions
TrendStrike Pro X performs best in clearly trending environments.
During low-volatility or ranging markets, false signals may occur, as with any trend-based system. Users are encouraged to combine the strategy with higher-timeframe structure or volatility filters if needed.
________________________________________
🔍 Key Features
• Dynamic trend filtering using dual EMA logic
• Strict engulfing candle entry trigger
• Adaptive SL/TP engine based on trend zones
• Clean visual interface with optional signal history display
________________________________________
📘 How to Use
1. Add the strategy to your chart and choose your preferred timeframe.
2. Monitor for signals — trades are only generated under high-confluence setups.
3. Optional: Use alerts to be notified when a signal occurs (manual setup via TradingView alerts).
📡 Alerts & Automation
TrendStrike Pro X supports real-time TradingView alerts when entry conditions are met, allowing users to stay informed without constantly monitoring charts.
Top Movers RSI StrategyEntry Signal (Buy): The script triggers a buy order when the chosen indicator(s) confirm a bullish trend or oversold condition, indicating a potential upward price movement.
Exit Signal (Sell): The script triggers a sell order when the indicator(s) signal a bearish trend or overbought condition, suggesting the price may decline.
Risk Management: The strategy includes stop-loss and take-profit levels to limit losses and secure profits.
Timeframe: The strategy operates on a chart to capture relevant price action.
Additional Filters: Optional filters like volume confirmation, moving average crossovers, or RSI thresholds can be included to reduce false signals.
Golden Arrow Strategy [LuciTech]The "Golden Arrow Strategy " is a sophisticated trading system built to pinpoint Fair Value Gaps (FVGs) and harness immediate rebalance patterns—termed "Golden Arrows"—for accurate trade setups. This strategy version is packed with advanced tools like dynamic risk management, customizable stop-loss methods, and an exceptional alert ecosystem featuring Telegram and webhook integration, ensuring traders stay connected to opportunities wherever they are.
Key Features
Precision FVG Detection:
Detects single or dual consecutive FVGs with customizable width settings (points, percentages, or ATR-based) for robust signal validation.
Versatile Stop-Loss Options:
Offers ATR-based, candle-based, FVG-based, or second FVG-based stop-loss calculations, giving traders ultimate flexibility.
Comprehensive Risk Management:
Features position sizing based on risk percentage, adjustable risk-reward ratios, and breakeven adjustments to safeguard profits effortlessly.
Time-Based Precision: Includes standard time filters plus a unique 2:30 PM filter, complete with visual cues like colored candles, perfect for traders targeting specific market windows.
Visual Clarity: Plots FVG boxes, second FVG boxes, and trade levels (entry, stop-loss, take-profit) with customizable colors and extension options.
Next-Level Alert System:
Webhook Alerts: Delivers detailed trade data in JSON format, enabling seamless automation or integration with external platforms.
Telegram Alerts: Sends real-time, formatted notifications straight to your Telegram chat—choose between standard or concise, emoji-rich messages for instant, actionable insights on the go.
Backtesting Ready: Fully equipped with strategy functions to test performance across various assets and timeframes with ease.
How It Works
FVG Identification: Detects FVGs based on user-defined width criteria, with an optional requirement for two consecutive FVGs to enhance signal strength.
Golden Arrow Signals: Triggers when price fills the FVG and rebalances, confirmed by wick penetration and closing conditions.
Automated Trade Execution: Enters long or short positions with position sizes calculated to match your risk tolerance.
Dynamic Exits: Sets stop-loss and take-profit levels using your preferred method, with optional breakeven shifts as profits grow.
Visual Feedback:
Displays bullish/bearish FVG boxes and second FVG boxes with distinct colors.
Plots entry, stop-loss, and take-profit levels for active trades
Alert Powerhouse:
Webhook Alerts: Pushes trade details in JSON format for external use—perfect for automation enthusiasts.
Telegram Alerts: Sends beautifully formatted messages to your Telegram chat, including trade direction, entry price, stop-loss, and take-profit, in either detailed or concise formats. Stay in the loop, no matter where you are.
Why This Strategy Shines
Adaptable and Precise: Whether you prefer single FVG signals or the added confirmation of dual FVGs, paired with multiple stop-loss options, this strategy molds to your trading style and market conditions.
Unmatched Alert Experience: The Telegram alerts are a game-changer—imagine getting a crisp, emoji-enhanced message with all trade details delivered instantly to your phone. Combined with webhook alerts, you’re always connected, whether you’re automating trades or just staying informed.
Risk Management Made Simple: Automated position sizing and breakeven features take the guesswork out of protecting your capital and securing gains.
CE + TSI Reversal Strategy🔁 CE + TSI Reversal Strategy (Optimized)
This strategy combines:
✅ Chandelier Exit flips (trend reversal detection)
✅ True Strength Index (TSI) crossover (momentum confirmation)
✅ Rejection candle filter (strong entry signal)
Key Features:
📈 Long-only entries to avoid poor-performing shorts
🔒 Rejection candle filter: entry only on strong price conviction
🎯 Fixed Stop Loss: $6, Take Profit: $9 (can be adjusted)
📊 Backtested with Pepperstone XAUUSD 5M data
Results (1-year backtest):
✅ Win rate: 52%
✅ Profit factor: 1.65
✅ Zero margin calls
🧠 Clean, consistent equity curve with fewer but higher quality trades
Perfect for traders focused on precision reversals with minimal risk exposure.
DVPOOverview
The DVPO (Dynamic Volume Profile Oscillator) Strategy is a comprehensive and highly customizable trading tool designed for precision and control. It is built around a unique, volume-driven oscillator that identifies potential market entries by analyzing the relationship between price, volume, and volatility.
This strategy is not just another signal generator; it's a complete framework that includes dynamic entry logic, adaptive risk management (ATR Stop Loss and R:R-based Take Profit), and a powerful dashboard of 10+ optional confirmation filters to help you tailor the strategy to your specific instrument, timeframe, and trading style.
The Core Concept: The DVPO Oscillator
The heart of this strategy is the DVPO oscillator. Unlike standard oscillators like RSI or Stochastics, the DVPO's primary goal is to quantify how far the current price has deviated from its recent volume-weighted "fair value."
Here’s how it works conceptually:
Micro Volume Profile: The indicator first analyzes a recent period of bars (defined by Lookback Period) to build a mini-profile of price and volume.
Volume-Weighted Mean: From this profile, it calculates a volume-weighted average price (VWAP) and the average deviation from that mean. This establishes the central point of value for the recent period.
Deviation Measurement: The oscillator's value is derived from how far the current price is from this calculated mean, scaled by the observed price deviation and a user-defined Sensitivity. A value above the midline suggests the price is trading at a premium, while a value below suggests it's at a discount.
Adaptive Volatility Zones: Instead of using fixed overbought/oversold levels (e.g., 70/30), the DVPO calculates dynamic upper and lower zones using the standard deviation of the oscillator itself. These zones expand and contract based on recent market volatility.
An entry signal is triggered not just when the oscillator is "overbought" or "oversold," but when it breaks out of these adaptive volatility zones, signaling that a statistically significant price movement is underway.
📈 Long Entry Condition : The oscillator crosses above the dynamic upper zone.
📉 Short Entry Condition : The oscillator crosses below the dynamic lower zone.
Integrated Risk & Trade Management
A signal is useless without proper risk management. This strategy has professional-grade risk management built directly into its logic.
Stop Loss (ATR-Based): The Stop Loss is not a fixed percentage. It is calculated using the Average True Range (ATR), allowing it to adapt automatically to the market's current volatility. In volatile periods, the stop will be wider; in quiet periods, it will be tighter.
Take Profit (Risk/Reward Ratio): The Take Profit level is calculated based on a user-defined Risk/Reward Ratio. If you set a ratio of 2.0, the Take Profit target will be placed at twice the distance of the Stop Loss from your entry price.
Dynamic Position Sizing: The strategy can automatically calculate the trade quantity for you. It determines the position size based on your specified Capital Size and the % Risk Per Trade you are willing to accept, ensuring disciplined risk control on every trade.
The Filter Dashboard : Enhance Your Signal Quality
To help reduce false signals and adapt to different market conditions, the strategy includes a comprehensive dashboard of optional confirmation filters. An entry signal will only be executed if it aligns with all the filters you have activated.
Trend & Momentum Filters :
T3, VMA, & VWAP Trend Filters: Utilize a suite of advanced moving averages (T3, Variable Moving Average, and a session-based VWAP) to ensure your trades are aligned with the dominant trend.
ADX Filter: Confirms that the market has sufficient directional strength for a trend-following trade, helping to avoid entries during choppy conditions.
Kaufman Efficiency Filter: Uses the Kaufman Efficiency Ratio to measure market noise. It only allows trades when the market is trending efficiently.
Volume & Market State Filters :
Volume Flow (VFI): A sophisticated volume-based filter that confirms whether volume is supporting the price move.
TDFI (Trader's Dynamic Index): A market state indicator designed to identify when the market is primed for a strong, directional move.
Flat Market Detector: A unique filter that identifies and avoids trading in sideways or ranging markets where trend strategies typically underperform.
Trade Condition Filters :
Min TP / Max SL %: Filter out trades where the risk/reward profile doesn't meet your minimum requirements (e.g., ignore a trade if the ATR-based stop loss is more than 10% away from the price).
Session Filters: Allows you to enable or disable trading on specific days of the week and to set a Cooldown Period (a set number of bars to wait after a trade closes before looking for a new entry).
How To Use This Strategy
Start with the Core: Begin by configuring the DVPO Oscillator settings (Lookback Period, Sensitivity, Zone Width) and your Risk Management parameters (ATR Multiplier, RR Ratio, % Risk Per Trade). These form the foundation of the strategy.
Backtest and Observe: Use TradingView's Strategy Tester to see how the core signals perform on your chosen asset and timeframe.
Layer Filters Intelligently: Enable the confirmation filters one by one and re-run your backtest. Observe how each filter impacts performance (e.g., does the T3 filter increase profitability but reduce the number of trades?). The goal is to find the optimal balance between signal quality and frequency.
Visualize and Analyze: Use the Show Risk/Reward Area option to plot your entry, stop loss, and take profit levels directly on the chart for every trade, providing a clear visual representation of your trade plan.
Disclaimer: This strategy is provided for educational and analytical purposes only. Past performance is not indicative of future results. All trading involves risk, and you should conduct your own thorough backtesting and analysis before deploying any strategy in a live market.